package br.com.sgpv2.service.movimentacao;

import java.util.List;

import br.com.sgpv2.controler.NegocioExeception;
import br.com.sgpv2.entity.movimentacao.Movimentacao;
import br.com.sgpv2.entity.movimentacao.MovimentacaoDTO;

public interface MovimentacaoService {
	
	void salvar(Movimentacao movimentacao);
	
	void alterar(Movimentacao movimentacao);
	
	List<Movimentacao> listar();
	
	void excluir(Movimentacao movimentacao);
	
	Movimentacao buscar(Integer pk) throws NegocioExeception;

	public Movimentacao calcularValoresTotalMovimentacao(
			Movimentacao movimentacao)
			throws NumberFormatException, NegocioExeception; 
	
	List<MovimentacaoDTO> consultarPorPeriodoEntidade(Integer mes, Integer ano);
	
	List<MovimentacaoDTO> consultarPorPeriodo(Integer mes, Integer ano);
	List<Movimentacao> consultarPorPeriodoCompleto(Integer mes, Integer ano);
	
	/**
	 * Método valida se existe um contrato para matricula informada, e não existe movimentação para o contrato no período informado.
	 * @param movimentacao
	 * @throws NegocioExeception 
	 */
	void validarPreIncluir(Movimentacao movimentacao) throws NegocioExeception;
}
